package com.sos.service;

import com.sos.model.dto.*;
import com.sos.model.entity.HelperInfo;
import com.sos.model.entity.User;
import com.sos.model.vo.ResultVO;
import org.springframework.web.multipart.MultipartFile;

public interface UserService {
    ResultVO<UserResponseDTO> register(UserRegisterDTO registerDTO);

    ResultVO<LoginResponseDTO> login(UserLoginDTO loginDTO);

    User getCurrentUser();
    
    void logout(String token);
    
    /**
     * 刷新访问令牌
     */
    ResultVO<LoginResponseDTO> refreshToken(RefreshTokenDTO refreshTokenDTO);
    
    /**
     * 发送密码重置验证码
     */
    void sendPasswordResetCode(PasswordResetCodeRequestDTO requestDTO);

    /**
     * 验证验证码并重置密码
     */
    void resetPassword(VerifyCodeResetPasswordDTO resetDTO);
    
    /**
     * 更新用户基本信息（除status外）
     */
    ResultVO<UserResponseDTO> updateUserInfo(UserUpdateDTO userUpdateDTO);
    
    /**
     * 更新用户密码
     */
    ResultVO<?> updatePassword(PasswordUpdateDTO passwordUpdateDTO);
    
    /**
     * 更新用户帮助他人状态
     */
    ResultVO<?> updateHelperStatus(HelperStatusUpdateDTO helperStatusUpdateDTO);
    
    /**
     * 获取当前用户基本信息
     */
    ResultVO<UserDetailDTO> getCurrentUserDetail();
    
    /**
     * 获取当前用户志愿者状态
     */
    ResultVO<UserHelperStatusDTO> getCurrentUserHelperStatus();

    /**
     * 获取用户在线状态
     */
    ResultVO<HelperInfo> getUserOnlineStatus();

}